{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-platform-comment",
      "artifactVersion": "2021.53.3",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "org.nuxeo.ecm.platform.comment",
          "org.nuxeo.ecm.platform.comment.api",
          "org.nuxeo.ecm.platform.comment.core",
          "org.nuxeo.ecm.platform.comment.restapi",
          "org.nuxeo.ecm.platform.comment.web",
          "org.nuxeo.ecm.platform.comment.workflow"
        ],
        "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment",
        "id": "grp:org.nuxeo.ecm.platform.comment",
        "name": "org.nuxeo.ecm.platform.comment",
        "parentIds": [
          "grp:org.nuxeo.ecm.platform"
        ],
        "readmes": [],
        "version": "2021.53"
      },
      "bundleId": "org.nuxeo.ecm.platform.comment",
      "components": [
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.comment.service.CommentService",
          "documentation": "\n    This component gives the user the possibility to add comments to documents.\n  \n",
          "documentationHtml": "<p>\nThis component gives the user the possibility to add comments to documents.\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.ecm.platform.comment.service.CommentService",
              "descriptors": [
                "org.nuxeo.ecm.platform.comment.service.CommentServiceConfig"
              ],
              "documentation": "\n      This extension can be used to configure the Comment Service\n    \n",
              "documentationHtml": "<p>\nThis extension can be used to configure the Comment Service\n</p><p></p>",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.CommentService/ExtensionPoints/org.nuxeo.ecm.platform.comment.service.CommentService--config",
              "id": "org.nuxeo.ecm.platform.comment.service.CommentService--config",
              "label": "config (org.nuxeo.ecm.platform.comment.service.CommentService)",
              "name": "config",
              "version": "2021.53.3"
            }
          ],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.CommentService",
          "name": "org.nuxeo.ecm.platform.comment.service.CommentService",
          "requirements": [],
          "resolutionOrder": 311,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.comment.service.CommentService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.CommentService/Services/org.nuxeo.ecm.platform.comment.api.CommentManager",
              "id": "org.nuxeo.ecm.platform.comment.api.CommentManager",
              "overriden": false,
              "version": "2021.53.3"
            },
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.comment.service.CommentService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.CommentService/Services/org.nuxeo.ecm.platform.comment.service.CommentService",
              "id": "org.nuxeo.ecm.platform.comment.service.CommentService",
              "overriden": false,
              "version": "2021.53.3"
            }
          ],
          "startOrder": 857,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.service.CommentService\">\n  <documentation>\n    This component gives the user the possibility to add comments to documents.\n  </documentation>\n\n  <implementation class=\"org.nuxeo.ecm.platform.comment.service.CommentService\" />\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.comment.api.CommentManager\" />\n    <provide interface=\"org.nuxeo.ecm.platform.comment.service.CommentService\" />\n  </service>\n\n  <extension-point name=\"config\">\n    <documentation>\n      This extension can be used to configure the Comment Service\n    </documentation>\n    <object class=\"org.nuxeo.ecm.platform.comment.service.CommentServiceConfig\" />\n  </extension-point>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/CommentService.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.lifecycle.LifeCycleService--lifecycle",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.lifecycle/Contributions/org.nuxeo.ecm.platform.comment.lifecycle--lifecycle",
              "id": "org.nuxeo.ecm.platform.comment.lifecycle--lifecycle",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "name": "org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"lifecycle\" target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\">\n\n    <lifecycle defaultInitial=\"moderation_pending\" name=\"comment_moderation\">\n\n      <transitions>\n        <transition destinationState=\"moderation_published\" name=\"moderation_publish\">\n          <description>Approve the comment</description>\n        </transition>\n        <transition destinationState=\"moderation_rejected\" name=\"moderation_reject\">\n          <description>Reject the comment</description>\n        </transition>\n      </transitions>\n      <states>\n        <state description=\"Default state\" name=\"moderation_pending\">\n          <transitions>\n            <transition>moderation_publish</transition>\n            <transition>moderation_reject</transition>\n          </transitions>\n        </state>\n        <state description=\"Comment published\" name=\"moderation_published\"/>\n        <state description=\"Comment Rejected\" name=\"moderation_rejected\"/>\n      </states>\n\n    </lifecycle>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.lifecycle.LifeCycleService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.lifecycle/Contributions/org.nuxeo.ecm.platform.comment.lifecycle--types",
              "id": "org.nuxeo.ecm.platform.comment.lifecycle--types",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "name": "org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\">\n    <types>\n      <type name=\"Comment\">comment_moderation</type>\n    </types>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.lifecycle",
          "name": "org.nuxeo.ecm.platform.comment.lifecycle",
          "requirements": [],
          "resolutionOrder": 312,
          "services": [],
          "startOrder": 290,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.lifecycle\">\n\n  <extension target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\"\n      point=\"lifecycle\">\n\n    <lifecycle name=\"comment_moderation\" defaultInitial=\"moderation_pending\">\n\n      <transitions>\n        <transition name=\"moderation_publish\" destinationState=\"moderation_published\">\n          <description>Approve the comment</description>\n        </transition>\n        <transition name=\"moderation_reject\" destinationState=\"moderation_rejected\">\n          <description>Reject the comment</description>\n        </transition>\n      </transitions>\n      <states>\n        <state name=\"moderation_pending\" description=\"Default state\">\n          <transitions>\n            <transition>moderation_publish</transition>\n            <transition>moderation_reject</transition>\n          </transitions>\n        </state>\n        <state name=\"moderation_published\" description=\"Comment published\"/>\n        <state name=\"moderation_rejected\" description=\"Comment Rejected\"/>\n      </states>\n\n    </lifecycle>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\"\n      point=\"types\">\n    <types>\n      <type name=\"Comment\">comment_moderation</type>\n    </types>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-life-cycle-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--schema",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.coreTypes/Contributions/org.nuxeo.ecm.platform.comment.coreTypes--schema",
              "id": "org.nuxeo.ecm.platform.comment.coreTypes--schema",
              "registrationOrder": 16,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"schema\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <schema name=\"comment\" prefix=\"comment\" src=\"schema/comment.xsd\"/>\n    <schema name=\"annotation\" prefix=\"annotation\" src=\"schema/annotation.xsd\"/>\n    <schema name=\"externalEntity\" prefix=\"externalEntity\" src=\"schema/externalEntity.xsd\"/>\n\n    <property indexOrder=\"ascending\" name=\"xpath\" schema=\"annotation\"/>\n    <!-- TODO remove it when PropertyCommentManager will be removed -->\n    <property indexOrder=\"ascending\" name=\"parentId\" schema=\"comment\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.coreTypes/Contributions/org.nuxeo.ecm.platform.comment.coreTypes--doctype",
              "id": "org.nuxeo.ecm.platform.comment.coreTypes--doctype",
              "registrationOrder": 17,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n\n    <facet name=\"ExternalEntity\">\n      <schema name=\"externalEntity\"/>\n    </facet>\n\n    <doctype extends=\"Folder\" name=\"CommentRoot\" special=\"true\">\n      <facet name=\"HiddenInNavigation\"/>\n      <facet name=\"HiddenInCreation\"/>\n      <subtypes>\n        <type>Folder</type>\n        <type>HiddenFolder</type>\n      </subtypes>\n    </doctype>\n\n    <doctype extends=\"Document\" name=\"Comment\">\n      <schema name=\"comment\"/>\n      <schema name=\"common\"/>\n      <schema name=\"dublincore\"/>\n      <facet name=\"HiddenInNavigation\"/>\n      <prefetch>\n        dc:title, dc:modified, comment.author, comment.text,\n        comment.creationDate\n      </prefetch>\n    </doctype>\n\n    <doctype append=\"true\" name=\"Domain\">\n      <subtypes>\n        <type>CommentRoot</type>\n      </subtypes>\n    </doctype>\n\n    <doctype extends=\"Comment\" name=\"Annotation\">\n      <schema name=\"annotation\"/>\n    </doctype>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.lifecycle.LifeCycleService--types",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.coreTypes/Contributions/org.nuxeo.ecm.platform.comment.coreTypes--types",
              "id": "org.nuxeo.ecm.platform.comment.coreTypes--types",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "name": "org.nuxeo.ecm.core.lifecycle.LifeCycleService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"types\" target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\">\n    <types>\n      <type name=\"CommentRoot\">default</type>\n    </types>\n    <types>\n      <type name=\"HiddenFolder\">default</type>\n    </types>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.coreTypes",
          "name": "org.nuxeo.ecm.platform.comment.coreTypes",
          "requirements": [
            "org.nuxeo.ecm.core.CoreExtensions"
          ],
          "resolutionOrder": 313,
          "services": [],
          "startOrder": 288,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.coreTypes\">\n\n  <require>org.nuxeo.ecm.core.CoreExtensions</require>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"schema\">\n    <schema name=\"comment\" prefix=\"comment\" src=\"schema/comment.xsd\" />\n    <schema name=\"annotation\" src=\"schema/annotation.xsd\" prefix=\"annotation\"/>\n    <schema name=\"externalEntity\" src=\"schema/externalEntity.xsd\" prefix=\"externalEntity\" />\n\n    <property schema=\"annotation\" name=\"xpath\" indexOrder=\"ascending\" />\n    <!-- TODO remove it when PropertyCommentManager will be removed -->\n    <property schema=\"comment\" name=\"parentId\" indexOrder=\"ascending\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\" point=\"doctype\">\n\n    <facet name=\"ExternalEntity\">\n      <schema name=\"externalEntity\" />\n    </facet>\n\n    <doctype name=\"CommentRoot\" extends=\"Folder\" special=\"true\">\n      <facet name=\"HiddenInNavigation\" />\n      <facet name=\"HiddenInCreation\" />\n      <subtypes>\n        <type>Folder</type>\n        <type>HiddenFolder</type>\n      </subtypes>\n    </doctype>\n\n    <doctype name=\"Comment\" extends=\"Document\">\n      <schema name=\"comment\" />\n      <schema name=\"common\" />\n      <schema name=\"dublincore\" />\n      <facet name=\"HiddenInNavigation\" />\n      <prefetch>\n        dc:title, dc:modified, comment.author, comment.text,\n        comment.creationDate\n      </prefetch>\n    </doctype>\n\n    <doctype name=\"Domain\" append=\"true\">\n      <subtypes>\n        <type>CommentRoot</type>\n      </subtypes>\n    </doctype>\n\n    <doctype name=\"Annotation\" extends=\"Comment\">\n      <schema name=\"annotation\"/>\n    </doctype>\n\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.lifecycle.LifeCycleService\"\n    point=\"types\">\n    <types>\n      <type name=\"CommentRoot\">default</type>\n    </types>\n    <types>\n      <type name=\"HiddenFolder\">default</type>\n    </types>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-schemas-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentation": "\n    This component defines the relation-related config for comments.\n  \n",
          "documentationHtml": "<p>\nThis component defines the relation-related config for comments.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.comment.service.CommentService--config",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.RelationContrib/Contributions/org.nuxeo.ecm.platform.comment.service.RelationContrib--config",
              "id": "org.nuxeo.ecm.platform.comment.service.RelationContrib--config",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.comment.service.CommentService",
                "name": "org.nuxeo.ecm.platform.comment.service.CommentService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"config\" target=\"org.nuxeo.ecm.platform.comment.service.CommentService\">\n    <config>\n      <converterClass>\n        org.nuxeo.ecm.platform.comment.impl.CommentConverterImpl\n      </converterClass>\n      <graphName>documentComments</graphName>\n      <!-- XXX AT: these namespaces should have an ending slash -->\n      <commentNamespace>http://www.nuxeo.org/comments/uid</commentNamespace>\n      <documentNamespace>http://www.nuxeo.org/document/uid</documentNamespace>\n      <predicateNamespace>\n        http://www.nuxeo.org/predicates/isCommentFor\n      </predicateNamespace>\n    </config>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.relations.services.RelationService--resourceadapters",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.RelationContrib/Contributions/org.nuxeo.ecm.platform.comment.service.RelationContrib--resourceadapters",
              "id": "org.nuxeo.ecm.platform.comment.service.RelationContrib--resourceadapters",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.relations.services.RelationService",
                "name": "org.nuxeo.ecm.platform.relations.services.RelationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"resourceadapters\" target=\"org.nuxeo.ecm.platform.relations.services.RelationService\">\n    <!-- XXX AT: this namespace should have an ending slash -->\n    <adapter class=\"org.nuxeo.ecm.platform.relations.adapters.DocumentModelResourceAdapter\" namespace=\"http://www.nuxeo.org/comments/uid\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.schema.TypeService--doctype",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.RelationContrib/Contributions/org.nuxeo.ecm.platform.comment.service.RelationContrib--doctype",
              "id": "org.nuxeo.ecm.platform.comment.service.RelationContrib--doctype",
              "registrationOrder": 18,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.schema.TypeService",
                "name": "org.nuxeo.ecm.core.schema.TypeService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"doctype\" target=\"org.nuxeo.ecm.core.schema.TypeService\">\n    <doctype extends=\"Relation\" name=\"CommentRelation\">\n      <facet name=\"HiddenInNavigation\"/>\n    </doctype>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.RelationContrib",
          "name": "org.nuxeo.ecm.platform.comment.service.RelationContrib",
          "requirements": [],
          "resolutionOrder": 314,
          "services": [],
          "startOrder": 292,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.service.RelationContrib\">\n\n  <documentation>\n    This component defines the relation-related config for comments.\n  </documentation>\n\n  <extension target=\"org.nuxeo.ecm.platform.comment.service.CommentService\"\n    point=\"config\">\n    <config>\n      <converterClass>\n        org.nuxeo.ecm.platform.comment.impl.CommentConverterImpl\n      </converterClass>\n      <graphName>documentComments</graphName>\n      <!-- XXX AT: these namespaces should have an ending slash -->\n      <commentNamespace>http://www.nuxeo.org/comments/uid</commentNamespace>\n      <documentNamespace>http://www.nuxeo.org/document/uid</documentNamespace>\n      <predicateNamespace>\n        http://www.nuxeo.org/predicates/isCommentFor\n      </predicateNamespace>\n    </config>\n  </extension>\n\n  <!-- relation adapters -->\n  <extension target=\"org.nuxeo.ecm.platform.relations.services.RelationService\"\n    point=\"resourceadapters\">\n    <!-- XXX AT: this namespace should have an ending slash -->\n    <adapter namespace=\"http://www.nuxeo.org/comments/uid\"\n      class=\"org.nuxeo.ecm.platform.relations.adapters.DocumentModelResourceAdapter\" />\n  </extension>\n\n  <extension target=\"org.nuxeo.ecm.core.schema.TypeService\"\n    point=\"doctype\">\n    <doctype name=\"CommentRelation\" extends=\"Relation\">\n      <facet name=\"HiddenInNavigation\" />\n    </doctype>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-relation-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.listener/Contributions/org.nuxeo.ecm.platform.comment.service.listener--listener",
              "id": "org.nuxeo.ecm.platform.comment.service.listener--listener",
              "registrationOrder": 23,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.event.EventServiceComponent",
                "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"listener\" target=\"org.nuxeo.ecm.core.event.EventServiceComponent\">\n\n    <listener async=\"false\" class=\"org.nuxeo.ecm.platform.comment.listener.CommentRemovedEventListener\" name=\"commentListener\" postCommit=\"false\">\n      <event>documentRemoved</event>\n    </listener>\n\n    <listener async=\"true\" class=\"org.nuxeo.ecm.platform.comment.listener.DocumentRemovedCommentEventListener\" name=\"docRemovedCommentListener\" postCommit=\"true\">\n      <event>documentRemoved</event>\n    </listener>\n\n    <listener async=\"true\" class=\"org.nuxeo.ecm.platform.comment.listener.CheckedInCommentListener\" name=\"checkedInCommentListener\" postCommit=\"true\">\n      <event>documentCheckedIn</event>\n    </listener>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.listener",
          "name": "org.nuxeo.ecm.platform.comment.service.listener",
          "requirements": [],
          "resolutionOrder": 315,
          "services": [],
          "startOrder": 294,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.service.listener\"\n  version=\"1.0\">\n\n  <extension target=\"org.nuxeo.ecm.core.event.EventServiceComponent\"\n    point=\"listener\">\n\n    <listener name=\"commentListener\" async=\"false\" postCommit=\"false\"\n      class=\"org.nuxeo.ecm.platform.comment.listener.CommentRemovedEventListener\">\n      <event>documentRemoved</event>\n    </listener>\n\n    <listener name=\"docRemovedCommentListener\" async=\"true\" postCommit=\"true\"\n      class=\"org.nuxeo.ecm.platform.comment.listener.DocumentRemovedCommentEventListener\">\n      <event>documentRemoved</event>\n    </listener>\n\n    <listener name=\"checkedInCommentListener\" async=\"true\" postCommit=\"true\"\n      class=\"org.nuxeo.ecm.platform.comment.listener.CheckedInCommentListener\">\n      <event>documentCheckedIn</event>\n    </listener>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-listener-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentation": "\n    The TreeCommentManager handles subscription to comment events on documents based on this parameter.\n    If true, document author will be subscribed to comment notifications on his document on the first comment.\n    The comment author will also be subscribed to comment notifications if it is his first comment on the document.\n\n    @author Nour AL KOTOB (nalkotob@nuxeo.com)\n  \n",
          "documentationHtml": "<p>\nThe TreeCommentManager handles subscription to comment events on documents based on this parameter.\nIf true, document author will be subscribed to comment notifications on his document on the first comment.\nThe comment author will also be subscribed to comment notifications if it is his first comment on the document.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService--notificationListenerHook",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.notification/Contributions/org.nuxeo.ecm.platform.comment.service.notification--notificationListenerHook",
              "id": "org.nuxeo.ecm.platform.comment.service.notification--notificationListenerHook",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "name": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"notificationListenerHook\" target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\">\n    <hookListener class=\"org.nuxeo.ecm.platform.comment.listener.CommentNotificationListener\" name=\"commentNotification\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService--notifications",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.notification/Contributions/org.nuxeo.ecm.platform.comment.service.notification--notifications",
              "id": "org.nuxeo.ecm.platform.comment.service.notification--notifications",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "name": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"notifications\" target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\">\n\n    <notification autoSubscribed=\"false\" availableIn=\"*\" channel=\"email\" enabled=\"true\" label=\"notifications.name.CommentAdded\" name=\"CommentAdded\" subject=\"New comment on '${docTitle}'\" template=\"commentAdded\">\n      <event name=\"commentAdded\"/>\n    </notification>\n\n    <notification autoSubscribed=\"false\" availableIn=\"*\" channel=\"email\" enabled=\"true\" label=\"notifications.name.Modification\" name=\"CommentUpdated\" subject=\"Updated comment on '${docTitle}'\" template=\"commentUpdated\">\n      <event name=\"commentUpdated\"/>\n    </notification>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService--templates",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.notification/Contributions/org.nuxeo.ecm.platform.comment.service.notification--templates",
              "id": "org.nuxeo.ecm.platform.comment.service.notification--templates",
              "registrationOrder": 3,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "name": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"templates\" target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\">\n    <template name=\"baseComment\" src=\"templates/baseComment.ftl\"/>\n    <template name=\"commentAdded\" src=\"templates/commentAdded.ftl\"/>\n    <template name=\"commentUpdated\" src=\"templates/commentUpdated.ftl\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService--notificationListenerVeto",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.notification/Contributions/org.nuxeo.ecm.platform.comment.service.notification--notificationListenerVeto",
              "id": "org.nuxeo.ecm.platform.comment.service.notification--notificationListenerVeto",
              "registrationOrder": 0,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "name": "org.nuxeo.ecm.platform.ec.notification.service.NotificationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"notificationListenerVeto\" target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\">\n    <veto class=\"org.nuxeo.ecm.platform.comment.notification.CommentNotificationVeto\" name=\"CommentNotificationVeto\"/>\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.ConfigurationService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.notification/Contributions/org.nuxeo.ecm.platform.comment.service.notification--configuration",
              "id": "org.nuxeo.ecm.platform.comment.service.notification--configuration",
              "registrationOrder": 32,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.ConfigurationService",
                "name": "org.nuxeo.runtime.ConfigurationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.runtime.ConfigurationService\">\n    <property name=\"org.nuxeo.ecm.platform.comment.service.notification.autosubscribe\">true</property>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.notification",
          "name": "org.nuxeo.ecm.platform.comment.service.notification",
          "requirements": [],
          "resolutionOrder": 316,
          "services": [],
          "startOrder": 296,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.service.notification\">\n\n  <extension\n          target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\"\n          point=\"notificationListenerHook\">\n    <hookListener name=\"commentNotification\"\n                  class=\"org.nuxeo.ecm.platform.comment.listener.CommentNotificationListener\" />\n  </extension>\n\n  <extension\n          target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\"\n          point=\"notifications\">\n\n    <notification name=\"CommentAdded\" channel=\"email\" enabled=\"true\" availableIn=\"*\"\n                  subject=\"New comment on '${docTitle}'\"\n                  autoSubscribed=\"false\" template=\"commentAdded\" label=\"notifications.name.CommentAdded\">\n      <event name=\"commentAdded\" />\n    </notification>\n\n    <notification name=\"CommentUpdated\" channel=\"email\" enabled=\"true\" availableIn=\"*\"\n                  subject=\"Updated comment on '${docTitle}'\"\n                  autoSubscribed=\"false\" template=\"commentUpdated\" label=\"notifications.name.Modification\">\n      <event name=\"commentUpdated\" />\n    </notification>\n\n  </extension>\n\n  <extension\n          target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\"\n          point=\"templates\">\n    <template name=\"baseComment\" src=\"templates/baseComment.ftl\" />\n    <template name=\"commentAdded\" src=\"templates/commentAdded.ftl\" />\n    <template name=\"commentUpdated\" src=\"templates/commentUpdated.ftl\" />\n  </extension>\n\n  <extension\n          target=\"org.nuxeo.ecm.platform.ec.notification.service.NotificationService\"\n          point=\"notificationListenerVeto\">\n    <veto name=\"CommentNotificationVeto\" class=\"org.nuxeo.ecm.platform.comment.notification.CommentNotificationVeto\" />\n  </extension>\n\n  <documentation>\n    The TreeCommentManager handles subscription to comment events on documents based on this parameter.\n    If true, document author will be subscribed to comment notifications on his document on the first comment.\n    The comment author will also be subscribed to comment notifications if it is his first comment on the document.\n\n    @author Nour AL KOTOB (nalkotob@nuxeo.com)\n  </documentation>\n  <extension target=\"org.nuxeo.runtime.ConfigurationService\" point=\"configuration\">\n    <property name=\"org.nuxeo.ecm.platform.comment.service.notification.autosubscribe\">true</property>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-notification-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.query.api.PageProviderService--providers",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.comment.pageprovider/Contributions/org.nuxeo.ecm.comment.pageprovider--providers",
              "id": "org.nuxeo.ecm.comment.pageprovider--providers",
              "registrationOrder": 12,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.query.api.PageProviderService",
                "name": "org.nuxeo.ecm.platform.query.api.PageProviderService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"providers\" target=\"org.nuxeo.ecm.platform.query.api.PageProviderService\">\n\n    <!-- deprecated since 11.1 -->\n    <!-- TreeCommentManager & PropertyCommentManager use it to provide backward compatibility on external entity API -->\n    <coreQueryPageProvider name=\"GET_COMMENT_AS_EXTERNAL_ENTITY\">\n      <pattern>\n        SELECT * FROM Comment WHERE ecm:path STARTSWITH '/' AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / PropertyCommentManager uses it -->\n    <coreQueryPageProvider name=\"GET_COMMENTS_FOR_DOCUMENT\">\n      <pattern>\n        SELECT * FROM Comment WHERE comment:parentId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / unused -->\n    <coreQueryPageProvider name=\"GET_ANNOTATION_AS_EXTERNAL_ENTITY\">\n      <pattern>\n        SELECT * FROM Annotation WHERE ecm:path STARTSWITH '/' AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / AnnotationService uses it when PropertyCommentManager is in place-->\n    <coreQueryPageProvider name=\"GET_ANNOTATIONS_FOR_DOCUMENT\">\n      <pattern>\n        SELECT * FROM Annotation WHERE comment:parentId = ? AND annotation:xpath = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / PropertyCommentManager uses it -->\n    <coreQueryPageProvider name=\"GET_EXTERNAL_COMMENT_BY_COMMENT_ANCESTOR\">\n      <pattern>\n        SELECT * FROM Comment WHERE comment:ancestorIds = ? AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- used by TreeCommentManager -->\n    <coreQueryPageProvider name=\"GET_COMMENTS_FOR_DOCUMENT_BY_ECM_PARENT\">\n      <pattern>\n        SELECT * FROM Comment WHERE ecm:parentId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- used by TreeCommentManager -->\n    <coreQueryPageProvider name=\"GET_EXTERNAL_COMMENT_BY_ECM_ANCESTOR\">\n      <pattern>\n        SELECT * FROM Comment WHERE ecm:ancestorId = ? AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- used by PropertyCommentManager & TreeCommentManager -->\n    <!-- currently not possible to do a ecm:ancestorId IN (..) -->\n    <coreQueryPageProvider name=\"GET_COMMENTS_FOR_DOCUMENTS_BY_COMMENT_ANCESTOR\">\n      <pattern>\n        SELECT * FROM Comment WHERE comment:ancestorIds IN ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- AnnotationService uses it when TreeCommentManager is in place-->\n    <coreQueryPageProvider name=\"GET_ANNOTATIONS_FOR_DOCUMENT_BY_ECM_PARENT\">\n      <pattern>\n        SELECT * FROM Annotation WHERE ecm:parentId = ? AND annotation:xpath = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.comment.pageprovider",
          "name": "org.nuxeo.ecm.comment.pageprovider",
          "requirements": [],
          "resolutionOrder": 317,
          "services": [],
          "startOrder": 112,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.comment.pageprovider\">\n\n  <extension target=\"org.nuxeo.ecm.platform.query.api.PageProviderService\" point=\"providers\">\n\n    <!-- deprecated since 11.1 -->\n    <!-- TreeCommentManager & PropertyCommentManager use it to provide backward compatibility on external entity API -->\n    <coreQueryPageProvider name=\"GET_COMMENT_AS_EXTERNAL_ENTITY\">\n      <pattern>\n        SELECT * FROM Comment WHERE ecm:path STARTSWITH '/' AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / PropertyCommentManager uses it -->\n    <coreQueryPageProvider name=\"GET_COMMENTS_FOR_DOCUMENT\">\n      <pattern>\n        SELECT * FROM Comment WHERE comment:parentId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / unused -->\n    <coreQueryPageProvider name=\"GET_ANNOTATION_AS_EXTERNAL_ENTITY\">\n      <pattern>\n        SELECT * FROM Annotation WHERE ecm:path STARTSWITH '/' AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / AnnotationService uses it when PropertyCommentManager is in place-->\n    <coreQueryPageProvider name=\"GET_ANNOTATIONS_FOR_DOCUMENT\">\n      <pattern>\n        SELECT * FROM Annotation WHERE comment:parentId = ? AND annotation:xpath = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- deprecated since 11.1 / PropertyCommentManager uses it -->\n    <coreQueryPageProvider name=\"GET_EXTERNAL_COMMENT_BY_COMMENT_ANCESTOR\">\n      <pattern>\n        SELECT * FROM Comment WHERE comment:ancestorIds = ? AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- used by TreeCommentManager -->\n    <coreQueryPageProvider name=\"GET_COMMENTS_FOR_DOCUMENT_BY_ECM_PARENT\">\n      <pattern>\n        SELECT * FROM Comment WHERE ecm:parentId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- used by TreeCommentManager -->\n    <coreQueryPageProvider name=\"GET_EXTERNAL_COMMENT_BY_ECM_ANCESTOR\">\n      <pattern>\n        SELECT * FROM Comment WHERE ecm:ancestorId = ? AND externalEntity:entityId = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- used by PropertyCommentManager & TreeCommentManager -->\n    <!-- currently not possible to do a ecm:ancestorId IN (..) -->\n    <coreQueryPageProvider name=\"GET_COMMENTS_FOR_DOCUMENTS_BY_COMMENT_ANCESTOR\">\n      <pattern>\n        SELECT * FROM Comment WHERE comment:ancestorIds IN ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n    <!-- AnnotationService uses it when TreeCommentManager is in place-->\n    <coreQueryPageProvider name=\"GET_ANNOTATIONS_FOR_DOCUMENT_BY_ECM_PARENT\">\n      <pattern>\n        SELECT * FROM Annotation WHERE ecm:parentId = ? AND annotation:xpath = ?\n      </pattern>\n      <pageSize>0</pageSize>\n      <maxPageSize>0</maxPageSize>\n    </coreQueryPageProvider>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-pageprovider-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.io.MarshallerRegistry--marshallers",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.marshaller/Contributions/org.nuxeo.ecm.platform.comment.service.marshaller--marshallers",
              "id": "org.nuxeo.ecm.platform.comment.service.marshaller--marshallers",
              "registrationOrder": 9,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.io.MarshallerRegistry",
                "name": "org.nuxeo.ecm.core.io.MarshallerRegistry",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"marshallers\" target=\"org.nuxeo.ecm.core.io.MarshallerRegistry\">\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentJsonWriter\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentJsonReader\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentListJsonWriter\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentListJsonReader\" enable=\"true\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.service.marshaller",
          "name": "org.nuxeo.ecm.platform.comment.service.marshaller",
          "requirements": [],
          "resolutionOrder": 318,
          "services": [],
          "startOrder": 295,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.service.marshaller\">\n  <extension target=\"org.nuxeo.ecm.core.io.MarshallerRegistry\" point=\"marshallers\">\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentJsonWriter\" enable=\"true\" />\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentJsonReader\" enable=\"true\" />\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentListJsonWriter\" enable=\"true\" />\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.CommentListJsonReader\" enable=\"true\" />\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-marshaller-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.runtime.migration.MigrationService--configuration",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.manager.migrator/Contributions/org.nuxeo.ecm.platform.comment.manager.migrator--configuration",
              "id": "org.nuxeo.ecm.platform.comment.manager.migrator--configuration",
              "registrationOrder": 2,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.runtime.migration.MigrationService",
                "name": "org.nuxeo.runtime.migration.MigrationService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.runtime.migration.MigrationService\">\n\n    <migration id=\"comment-storage\">\n      <description label=\"migration.comment-storage\">Migration of the comment storage model</description>\n      <class>org.nuxeo.ecm.platform.comment.impl.CommentsMigrator</class>\n      <defaultState>secured</defaultState>\n      <state id=\"relation\">\n        <description label=\"migration.comment-storage.relation\">Comments stored as relations</description>\n      </state>\n      <state id=\"property\">\n        <description label=\"migration.comment-storage.property\">Comments stored with their parent id as property\n        </description>\n      </state>\n      <state id=\"secured\">\n        <description label=\"migration.comment-storage.secured\">Comments stored under the commented document\n        </description>\n      </state>\n\n      <step fromState=\"relation\" id=\"relation-to-property\" toState=\"property\">\n        <description label=\"migration.comment-storage.relation-to-property\">Migrate comments from relations to the\n          parent id property usage\n        </description>\n      </step>\n      <step fromState=\"property\" id=\"property-to-secured\" toState=\"secured\">\n        <description label=\"migration.comment-storage.property-to-secured\">Migrate comments under the commented document\n        </description>\n      </step>\n    </migration>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.manager.migrator",
          "name": "org.nuxeo.ecm.platform.comment.manager.migrator",
          "requirements": [],
          "resolutionOrder": 319,
          "services": [],
          "startOrder": 291,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.manager.migrator\" version=\"1.0\">\n\n  <extension target=\"org.nuxeo.runtime.migration.MigrationService\" point=\"configuration\">\n\n    <migration id=\"comment-storage\">\n      <description label=\"migration.comment-storage\">Migration of the comment storage model</description>\n      <class>org.nuxeo.ecm.platform.comment.impl.CommentsMigrator</class>\n      <defaultState>secured</defaultState>\n      <state id=\"relation\">\n        <description label=\"migration.comment-storage.relation\">Comments stored as relations</description>\n      </state>\n      <state id=\"property\">\n        <description label=\"migration.comment-storage.property\">Comments stored with their parent id as property\n        </description>\n      </state>\n      <state id=\"secured\">\n        <description label=\"migration.comment-storage.secured\">Comments stored under the commented document\n        </description>\n      </state>\n\n      <step id=\"relation-to-property\" fromState=\"relation\" toState=\"property\">\n        <description label=\"migration.comment-storage.relation-to-property\">Migrate comments from relations to the\n          parent id property usage\n        </description>\n      </step>\n      <step id=\"property-to-secured\" fromState=\"property\" toState=\"secured\">\n        <description label=\"migration.comment-storage.property-to-secured\">Migrate comments under the commented document\n        </description>\n      </step>\n    </migration>\n\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-migration.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.ecm.platform.comment.impl.AnnotationServiceImpl",
          "documentation": "\n    The Annotation Service allows to manage annotations on documents.\n  \n",
          "documentationHtml": "<p>\nThe Annotation Service allows to manage annotations on documents.\n</p><p></p>",
          "extensionPoints": [],
          "extensions": [],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.api.AnnotationService",
          "name": "org.nuxeo.ecm.platform.comment.api.AnnotationService",
          "requirements": [],
          "resolutionOrder": 320,
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.ecm.platform.comment.api.AnnotationService",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.api.AnnotationService/Services/org.nuxeo.ecm.platform.comment.api.AnnotationService",
              "id": "org.nuxeo.ecm.platform.comment.api.AnnotationService",
              "overriden": false,
              "version": "2021.53.3"
            }
          ],
          "startOrder": 856,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.api.AnnotationService\">\n\n  <documentation>\n    The Annotation Service allows to manage annotations on documents.\n  </documentation>\n\n  <implementation class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationServiceImpl\"/>\n\n  <service>\n    <provide interface=\"org.nuxeo.ecm.platform.comment.api.AnnotationService\"/>\n  </service>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/annotation-service.xml",
          "xmlPureComponent": false
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.io.MarshallerRegistry--marshallers",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.annotation.marshaller/Contributions/org.nuxeo.ecm.annotation.marshaller--marshallers",
              "id": "org.nuxeo.ecm.annotation.marshaller--marshallers",
              "registrationOrder": 10,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.io.MarshallerRegistry",
                "name": "org.nuxeo.ecm.core.io.MarshallerRegistry",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"marshallers\" target=\"org.nuxeo.ecm.core.io.MarshallerRegistry\">\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationJsonWriter\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationJsonReader\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationListJsonWriter\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationListJsonReader\" enable=\"true\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.annotation.marshaller",
          "name": "org.nuxeo.ecm.annotation.marshaller",
          "requirements": [],
          "resolutionOrder": 321,
          "services": [],
          "startOrder": 85,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.ecm.annotation.marshaller\">\n  <extension target=\"org.nuxeo.ecm.core.io.MarshallerRegistry\" point=\"marshallers\">\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationJsonWriter\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationJsonReader\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationListJsonWriter\" enable=\"true\"/>\n    <register class=\"org.nuxeo.ecm.platform.comment.impl.AnnotationListJsonReader\" enable=\"true\"/>\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/annotation-marshaller-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.security.SecurityService--permissions",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.defaultPermissions/Contributions/org.nuxeo.ecm.platform.comment.defaultPermissions--permissions",
              "id": "org.nuxeo.ecm.platform.comment.defaultPermissions--permissions",
              "registrationOrder": 4,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.security.SecurityService",
                "name": "org.nuxeo.ecm.core.security.SecurityService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"permissions\" target=\"org.nuxeo.ecm.core.security.SecurityService\">\n\n    <permission name=\"Comment\">\n      <include>WriteLifeCycle</include>\n    </permission>\n\n    <permission name=\"Moderate\"/>\n\n  </extension>"
            },
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.platform.content.template.service.ContentTemplateService--factoryBinding",
              "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.defaultPermissions/Contributions/org.nuxeo.ecm.platform.comment.defaultPermissions--factoryBinding",
              "id": "org.nuxeo.ecm.platform.comment.defaultPermissions--factoryBinding",
              "registrationOrder": 1,
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.platform.content.template.service.ContentTemplateService",
                "name": "org.nuxeo.ecm.platform.content.template.service.ContentTemplateService",
                "type": "service"
              },
              "version": "2021.53.3",
              "xml": "<extension point=\"factoryBinding\" target=\"org.nuxeo.ecm.platform.content.template.service.ContentTemplateService\">\n    <factoryBinding factoryName=\"SimpleTemplateFactory\" name=\"CommentRootFactory\" targetType=\"CommentRoot\">\n      <acl>\n        <ace granted=\"true\" permission=\"AddChildren\" principal=\"members\"/>\n        <ace granted=\"true\" permission=\"RemoveChildren\" principal=\"members\"/>\n      </acl>\n     </factoryBinding>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment.defaultPermissions",
          "name": "org.nuxeo.ecm.platform.comment.defaultPermissions",
          "requirements": [
            "org.nuxeo.ecm.platform.content.template.service.ContentTemplateService.defaultContrib",
            "org.nuxeo.ecm.core.security.defaultPermissions"
          ],
          "resolutionOrder": 334,
          "services": [],
          "startOrder": 289,
          "version": "2021.53.3",
          "xmlFileContent": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<component name=\"org.nuxeo.ecm.platform.comment.defaultPermissions\">\n\n  <require>org.nuxeo.ecm.core.security.defaultPermissions</require>\n  <require>org.nuxeo.ecm.platform.content.template.service.ContentTemplateService.defaultContrib</require>\n\n  <extension target=\"org.nuxeo.ecm.core.security.SecurityService\"\n    point=\"permissions\">\n\n    <permission name=\"Comment\">\n      <include>WriteLifeCycle</include>\n    </permission>\n\n    <permission name=\"Moderate\" />\n\n  </extension>\n\n  <extension\n      target=\"org.nuxeo.ecm.platform.content.template.service.ContentTemplateService\"\n      point=\"factoryBinding\">\n    <factoryBinding name=\"CommentRootFactory\" factoryName=\"SimpleTemplateFactory\"\n                     targetType=\"CommentRoot\">\n      <acl>\n        <ace granted=\"true\" permission=\"AddChildren\" principal=\"members\"/>\n        <ace granted=\"true\" permission=\"RemoveChildren\" principal=\"members\"/>\n      </acl>\n     </factoryBinding>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/comment-defaultPermissions-contrib.xml",
          "xmlPureComponent": true
        }
      ],
      "fileName": "nuxeo-platform-comment-2021.53.3.jar",
      "groupId": "org.nuxeo.ecm.platform",
      "hierarchyPath": "/grp:org.nuxeo.ecm.platform/grp:org.nuxeo.ecm.platform.comment/org.nuxeo.ecm.platform.comment",
      "id": "org.nuxeo.ecm.platform.comment",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: 1.6.0_20 (Sun Microsystems Inc.)\r\nBuilt-By: root\r\nBuild-Jdk: 11.0.22\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 0.0.0.SNAPSHOT\r\nExport-Package: org.nuxeo.ecm.platform.comment.ejb,org.nuxeo.ecm.platf\r\n orm.comment.impl,org.nuxeo.ecm.platform.comment.listener,org.nuxeo.ec\r\n m.platform.comment.service\r\nBundle-ActivationPolicy: lazy\r\nBundle-ClassPath: .\r\nBundle-Category: web,stateful\r\nBundle-Name: Nuxeo Comment project\r\nBundle-RequiredExecutionEnvironment: JavaSE-1.6\r\nBundle-Vendor: Nuxeo\r\nEclipse-LazyStart: true\r\nNuxeo-Component: OSGI-INF/CommentService.xml, OSGI-INF/comment-default\r\n Permissions-contrib.xml, OSGI-INF/comment-life-cycle-contrib.xml, OSG\r\n I-INF/comment-schemas-contrib.xml, OSGI-INF/comment-relation-contrib.\r\n xml, OSGI-INF/comment-listener-contrib.xml, OSGI-INF/comment-notifica\r\n tion-contrib.xml, OSGI-INF/comment-pageprovider-contrib.xml, OSGI-INF\r\n /comment-marshaller-contrib.xml, OSGI-INF/comment-migration.xml, OSGI\r\n -INF/annotation-service.xml, OSGI-INF/annotation-marshaller-contrib.xml\r\nImport-Package: javax.annotation;version=\"1.0\",javax.ejb,javax.securit\r\n y.auth.login,org.apache.commons.logging,org.nuxeo.common.utils,org.nu\r\n xeo.common.xmap.annotation,org.nuxeo.ecm.core;api=split,org.nuxeo.ecm\r\n .core.api;api=split,org.nuxeo.ecm.core.api.event,org.nuxeo.ecm.core.a\r\n pi.model,org.nuxeo.ecm.core.api.repository,org.nuxeo.ecm.core.api.sec\r\n urity,org.nuxeo.ecm.core.api.security.impl,org.nuxeo.ecm.core.event,o\r\n rg.nuxeo.ecm.core.event.impl,org.nuxeo.ecm.core.schema,org.nuxeo.ecm.\r\n core.schema.types,org.nuxeo.ecm.directory;api=split,org.nuxeo.ecm.pla\r\n tform.comment.api,org.nuxeo.ecm.platform.comment.workflow.services,or\r\n g.nuxeo.ecm.platform.relations.api,org.nuxeo.ecm.platform.relations.a\r\n pi.impl,org.nuxeo.ecm.platform.usermanager,org.nuxeo.runtime,org.nuxe\r\n o.runtime.api,org.nuxeo.runtime.model\r\nBundle-SymbolicName: org.nuxeo.ecm.platform.comment;singleton=true\r\n\r\n",
      "maxResolutionOrder": 334,
      "minResolutionOrder": 311,
      "packages": [],
      "requirements": [],
      "version": "2021.53.3"
    }
  ],
  "creationDate": 1714377120883,
  "key": "Nuxeo Platform-2021.53",
  "name": "Nuxeo Platform",
  "operations": [],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1714377120883,
  "version": "2021.53"
}